<?php


/**
 * 封装输出xml格式
 * @param $status   返回的状态值  状态要在config.php里面设置
 * @param array $dataSource 返回的table2内容
 * @param $HaveSecondRet 应该是用户的手机号
 * $param $notice Table1里的TEXT
 * @param null $value  ID或者token
 * @param $table_three 推荐视频独有格式
 * @return null|\think\response\Xml
 */
function toXml($status,$notice,$dataSource=[],$HaveSecondRet=0,$value=null,$table_three=[]){
    if (!is_int($status)) return null;

//    $options = [
//        // 根节点名
//        'root_node' => 'NewDataSet',
//        // 根节点属性
//        'root_attr' => '',
//        //数字索引的子节点名
//        'item_node' => 'item',
//        // 数字索引子节点key转换的属性名
//        'item_key'  => '',
//        // 数据编码
//        'encoding'  => 'utf-8',
//    ];

    //状态
    $complate['Return'] = $status;
    $complate['Text'] = \think\Config::get($notice)[$status];
    $complate['HaveSecondRet'] = $HaveSecondRet;
    $complate['Value'] = $value;

    //拼接Table1
    $header = '<?xml version="1.0" encoding="utf-8"?>';
    $table1 = '';
    $table1 .= '<Table1>';
    foreach($complate as $k2 => $v2){
//        $table1 .= '<'.$k2.'>'.$v2.'</'.$k2.'>';
        if($k2=='Value'&&$value==null){
            $table1 .= $v2.'<'.$k2.' />';
        }else{
            $table1 .= '<'.$k2.'>'.$v2.'</'.$k2.'>';
        }
    }
    $table1 .= '</Table1>';

    //拼接Table2
    $table2 = '';
    foreach($dataSource as $k3 => $v3){
        $table2 .= '<Table2>';
        foreach($v3 as $k4 => $v4){
            if($k4=='password'||$k4=='address'){
                $table2 .= '<'.$k4.' />';
            }else{
                $table2 .= '<'.$k4.'>'.$v4.'</'.$k4.'>';
            }

        }
        $table2 .= '</Table2>';
    }
    //如果Table3存在且为数组时，拼接Table3
    if(!empty($table_three)&&is_array($table_three)){
        $table3 = '';
        foreach($table_three as $k5 => $v5){
            $table3 .= '<Table3>';
            foreach($v5 as $k6 => $v6){
                if($k6=='password'){
                    $table3 .= '<'.$k6.' />';
                }else{
                    $table3 .= '<'.$k6.'>'.$v6.'</'.$k6.'>';
                }
            }
            $table3 .= '</Table3>';
        }
        //生成xml
        $xml_res = $header . '<NewDataSet>' . $table1 . $table2 . $table3 . '</NewDataSet>';
    }else{
        $xml_res = $header . '<NewDataSet>' . $table1 . $table2 . '</NewDataSet>';
    }

    return $xml_res;

//    $data = ['Table1'=>$complate,'Table2'=>$str_xml];
//    return xml($str_xml,200,[],$options);
}
